CS / SWE 421 - Midterm Review Topics
Check back for updates! Last updated: 2/22/2010.
Don't forget you may bring a 3x5" notecard with whatever notes on it you
want to the exam. It must be hand written... not printed or photocopied or
typed, etc... You will turn it in with the exam.
The following things are what I expect you to know for the CS / SWE 421
Midterm
- UML
- Know the goal and general ideas behind use cases. Know how to read,
draw and interpret a diagram.
- Can you explain why a use case description has each part?
- Know how to use the relationships: extends, includes,
generalization
- Why do we use use cases? What are the benefits?
- How to draw class diagrams (including all the parts we discussed in
class)
- What are all the parts? Relationships? What do they mean?
- How to interpret class diagrams (including all the parts we
discussed in class)
- How to validate a class diagram contains all needed pieces to
implement a given scenario. Example: I give you a class diagram and
the description. Does it satisfy all needs?
- Know how to draw activity and swimlane diagrams (get the
arrows/boxes/start/end correct)
- SKIP THIS --- we have not covered sequence diagrams yetKnow how to draw sequence diagrams (get the arrows/boxes/start/end
correct)
- Know how to draw state diagrams (get the arrows/boxes/start/end
correct)
- Know how to draw DFD diagrams. What is a level 0 diagram? How do you
create a level 1 diagram? What is a DFD trying to show?
- Know how to draw ERD diagrams. What are they trying to show? How are
they different from DFD diagrams?
- Software Engineering
- Know the goal of software engineering
- Be able to explain the generic process framework and APPLY it!
- communication, planning, modeling, construction, deployment
- What are some works tasks and products for the process steps?
- Be able to explain a few general reasons many project fail and
identify the reason a project failed given a scenario
- What is an umbrella activity? Be able to briefly explain:
- Software project tracking and control
- Risk management
- Software quality assurance
- Technical reviews
- Measurement
- Software configuration management
- Reusability management
- Be able to explain what the following models are (steps, etc...) and
in what situations each is appropriate
- waterfall
- spiral
- RAD
- incremental
- Unified Process
- Explain when to use prototyping (and why)
- What is a grammatical parse and why do we do it?
- CRC Cards
- Why do we use CRC cards
- What are the steps involved in using them
- What goes on a card and what do those things mean? (you can
ignore stereotypes)
- Agile Methods
- Explain what agile methods are (similarities and differences
between them and "prescriptive" methods). How do agile methods
address the challenges found in prescriptive methods? How do Agile
methods reduce the need for documentation?
- eXtreme Programming
- If I give you one of the 12 areas in eXtreme Programming, be
able to explain it
- If I give you one of the 12 areas in eXtreme Programming,
explain what other areas must also be done for it to work.
(Generally, can you just pick this one area of eXtreme
Programming and apply it, or do you need other parts also to
make it work?)
Scrum
- Know generally what Scrum is, what is the process?
- Be able to explain how Scrum plans and executes 30 day
sprints. What happens at the beginning to determine the Sprint
backlog? What happens every day? What happens at the end? What
is velocity (and how do you calculate it)
- Be able to describe the Scrum taskboard
- Be able to write or interpret User Stories.
- What are the roles in Scrum?
- Know the general difference in methodology between Agile and
Prescriptive. What do each strive to do? What is their
philosophy?
- Know what factors may drive a project NOT to use XP/Scrum.
- Requirements
- Know the general steps in the requirements process
- Inception, elicitation, elaboration, negotiation,
specification, validation
- Be able to explain briefly each step (1-2 sentences per
step)
- Be able to describe problems in requirements. Answer the question
"What is wrong with this functional requirement?"
- Know the difference between functional and non-functional
requirements. Be able to give examples of both
- Analysis phase
- What is the analysis phase?
- What are the objectives?
- Subversion
- Know the concepts in subversion: add, update, commit, tag. You do not
need to know specific syntax because it differs for different tools...
but the concepts and the terms are standard.